#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
  Главный скрипт
  
  PageHandler: Обраточик страниц, перехватывающий все адреса сайта.
"""

import logging
from engine import settings
from engine import styles
from engine import pagegen
from engine import formhandler
from engine import rpc
from engine import features
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

logging.getLogger().setLevel(logging.INFO)      # включаем логгирование событий

class PageHandler(webapp.RequestHandler):
  """Создает объект класса-обработчика страниц

  Args:
    webapp.ReauestHandler: обработчик запросов
  """

  def get(self, category):
    """По методу GET забирает страницу и раздел сайта, задает заголовок портала из настроек
        и вызывает генератор страниц с параметрами страницы, раздела и параметров шаблона.

    Args:
      self: класс обработчика
      category: запрошенный раздел страницы
    """
    
    if not category:                      # если раздел не задан - считаем раздел корневым
      category = settings.ROOT

    page_template_values = {              # задаем изначальные параметры шаблона страницы
      'portal_title': settings.SITETITLE
    }

    pagegen.generatePage(self, category, page_template_values)      # генерируем страницу

application = webapp.WSGIApplication([
    ('/styles/(.*)', styles.StylesHandler),
    ('/formhandler(.*)', formhandler.FormHandler),
    ('/rpc/(.*)', rpc.RPCHandler)
  ] +
  features.features +
  [('/(.*)', PageHandler)]
  , debug = settings.DEBUG)

def main():
  run_wsgi_app(application)
if __name__ == "__main__":
  main()